<?php
/*
 * @开发工具: JetBrains PhpStorm.
 * @文件名：user_company_id.class.php
 * @类功能: https://www.juhe.cn/
 * @开发者: cxl
 * @开发时间： 15-03-31
 * @版本：version 1.0
 */
namespace app\common\ext;

class IJuHe{
    //常理定义
    private static $RealUrl = "http://op.juhe.cn/idcard/query"; //实名验证

    //实名验证
    private static $RealKey = "65152f558f69bc8700cea4ce977d8ae3"; //实名验证申请的APPKEY

    //静态变量定义
    private static $error = null;
    private static $code = null;

    /**
     * @功能：实名验证
     * @param $name string 用户姓名
     * @param $card string 身份证号码
     * @return bool
     */
    public static function real($name,$card){
        //参数配置
        $param['key'] = self::$RealKey;//应用APPKEY
        $param['realname'] = $name;//用户姓名
        $param['idcard'] = $card;//身份证号码

        //参数转化格式
        $param_str = http_build_query($param);

        //实名验证发送请求
        $content = self::RealCurl(self::$RealUrl,$param_str);

        //判断返回内容是否存在
        if ($content) {
            //判断发送是否正常
            $result = json_decode($content, true);

            //判断是否正常
            if ($result['error_code'] == 0) {
                //判断是否一致
                if($result['result']['res']=='1'){
                    //设置错误信息
                    self::$error = "身份证号码和真实姓名一致";
                    self::$code = $result['error_code'];

                    //正常返回
                    return true;
                }else{
                    //设置错误信息
                    self::$error = "身份证号码和真实姓名不一致";
                    self::$code = $result['error_code'];

                    //正常返回
                    return false;
                }
            } else {
                //设置错误信息
                self::$error = $result['reason'];
                self::$code = $result['error_code'];

                //返回异常
                return false;
            }
        } else {
            //设置错误信息
            self::$error = "请求失败！";
            self::$code = "9999";

            //返回异常
            return false;
        }
    }

    /**
     * @功能：返回错误信息
     * @return null|string
     */
    public static function getError(){
        return self::$error;
    }

    /**
     * @功能：返回错误编码
     * @return null|string
     */
    public static function getCode(){
        return self::$code;
    }

    /**
    *请求接口返回内容
    *@param string $url [请求的URL地址]
    *@param string|bool $params [请求的参数]
    *@param bool $is_post [是否采用POST形式]
    *@return string
    */
    private static function RealCurl($url,$params=false,$is_post=false){
        //参数设置
        $ch=curl_init();
        curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
        curl_setopt($ch,CURLOPT_USERAGENT,'JuheData');
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,60);
        curl_setopt($ch,CURLOPT_TIMEOUT,60);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);

        //判断请求方式
        if ($is_post === true) {
            //设置post方式请求
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            //设置get方式请求地址
            if ($params) {
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }

        //发送请求
        $response = curl_exec($ch);
        if ($response === false) {
            //发送失败
            return false;
        }

        //关闭链接
        curl_close($ch);

        //返回值
        return $response;
    }
}
